import pika
import pickle
from bs4 import BeautifulSoup
import time

# 1.建立RabbitMQ连接
connection = pika.BlockingConnection(
    pika.ConnectionParameters(host='127.0.0.1')
)
# 2.声明频道对象
channel = connection.channel()
# 3.声明scrapy的队列
queueName = 'scrapy'
channel.queue_declare(queue=queueName, durable=True)

# 4.进行数据处理
def scrapy(response):
    print(f'进行数据处理')
    # 把页面源代码交给BeautifulSoup进行处理，生成BS对象并指定html解析器
    pageHtml = BeautifulSoup(response.text, "html.parser")
    # 获取html内的div，div的class为tbl-body。里面包含着需要爬取的数据
    tableDiv = pageHtml.find("div", attrs={"class": "tbl-body"})
    # 获取所有的tr
    dataDiv = tableDiv.findAll("tr")
    # 删除第一个表头数据
    del (dataDiv[0])
    # 数据信息
    for data in dataDiv:
        # 得到每一行中的每一列
        oneData = data.findAll("td")
        # 输出数据
        # print(oneData)

while True:
    method_frame, header_frame, body = channel.basic_get(
        queue=queueName, auto_ack=True
    )
    if body:
        # 从bytes对象中读取一个反序列化对象，并返回其重组后的对象；
        resp = pickle.loads(body)
        print(f'从{resp.url}获取数据')
        # 进行数据分析
        scrapy(resp)
    time.sleep(1)
